package com.anjie.powerproject.map.impl;

import com.anjie.powerproject.entity.PreStrategy;
import com.anjie.powerproject.entity.StrategyOutput;
import com.anjie.powerproject.map.StrategyMap;
import com.anjie.powerproject.pojo.dto.StrategyDTO;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

@Component
public class StrategyMapImpl implements StrategyMap {

    @Override
    public StrategyDTO toDTO(PreStrategy strategy) {
        if ( strategy == null ) {
            return null;
        }

        StrategyDTO strategyDTO = new StrategyDTO();

        strategyDTO.setContent( strategy.getInfo() );
        strategyDTO.setStartTime( strategy.getStartTime() );
        strategyDTO.setEndTime( strategy.getEndTime() );

        strategyDTO.setSpan( Utils.toTimeStr(strategy.getInfo()) );
        strategyDTO.setInfo( Utils.toInfoStr(strategy.getInfo()) );

        return strategyDTO;
    }

    @Override
    public List<StrategyDTO> toDTO(List<PreStrategy> strategies) {
        if ( strategies == null ) {
            return null;
        }

        List<StrategyDTO> list = new ArrayList<StrategyDTO>( strategies.size() );
        for ( PreStrategy preStrategy : strategies ) {
            list.add( toDTO( preStrategy ) );
        }

        return list;
    }

    @Override
    public List<List<StrategyDTO>> toDTOList(List<List<PreStrategy>> strategiesList) {
        if ( strategiesList == null ) {
            return null;
        }

        List<List<StrategyDTO>> list1 = new ArrayList<List<StrategyDTO>>( strategiesList.size() );
        for ( List<PreStrategy> list : strategiesList ) {
            list1.add( toDTO( list ) );
        }

        return list1;
    }

    @Override
    public StrategyDTO toDTO2(StrategyOutput strategy) {
        if ( strategy == null ) {
            return null;
        }

        StrategyDTO strategyDTO = new StrategyDTO();

        strategyDTO.setContent( strategy.getInfo() );
        strategyDTO.setStartTime( strategy.getStartTime() );
        strategyDTO.setEndTime( strategy.getEndTime() );

        strategyDTO.setSpan( Utils.toTimeStr(strategy.getInfo()) );
        strategyDTO.setInfo( Utils.toInfoStr(strategy.getInfo()) );

        return strategyDTO;
    }

    @Override
    public List<StrategyDTO> toDTO2(List<StrategyOutput> strategies) {
        if ( strategies == null ) {
            return null;
        }

        List<StrategyDTO> list = new ArrayList<StrategyDTO>( strategies.size() );
        for ( StrategyOutput strategyOutput : strategies ) {
            list.add( toDTO2( strategyOutput ) );
        }

        return list;
    }

    @Override
    public List<List<StrategyDTO>> toDTO2List(List<List<StrategyOutput>> strategiesList) {
        if ( strategiesList == null ) {
            return null;
        }

        List<List<StrategyDTO>> list1 = new ArrayList<List<StrategyDTO>>( strategiesList.size() );
        for ( List<StrategyOutput> list : strategiesList ) {
            list1.add( toDTO2( list ) );
        }

        return list1;
    }
}
